<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript">
	var arr1 = [1,2,3,4]
	var arr2 = arr1;

	//arr2.push(5);
	//alert(arr1);		//1,2,3,4,5	 只是改变了arr2，但是arr1也变了
	//alert(arr2);		//1,2,3,4,5

	//实际上，出于性能的考虑，并不会把数组再复制一份给arr2，而是arr2引用了数组的意思。可以假想为，数组会类似于作用域一样会有预解析，会把数组[1,2,3,4]先仍在script最上端，而arr1和arr2都只是指向这个数组（我们可以把所有的赋值都解释为指向，其实JS中所有的对象都是引用）。而当你利用arr2来改变数组的时候，数组同时也改变了，最后你再指向，当然都是改变后的同一个值

	//那么,如何让arr2改变的时候arr1不变呢？我们以arr3为例
	var arr3 = [];

	for (var i in arr1){		//或for循环
		arr3[i] = arr1[i];
	}
	arr3.push(5);

	alert(arr1);
	alert(arr3);
	</script>
</head>
<body>
	
</body>
</html>